package datastructure.hash.solution;

import java.util.HashSet;

/**
 * 对于一个正整数，每一次将该数替换为它每个位置上的数字的平方和。
 * 然后重复这个过程直到这个数变为 1，也可能是 无限循环 但始终变不到 1。
 * 如果这个过程 结果为 1，那么这个数就是快乐数
 输入：n = 19
 输出：true
 解释：
 12 + 92 = 82
 82 + 22 = 68
 62 + 82 = 100
 12 + 02 + 02 = 1
 */
public class SolutionIsHappy {
    public boolean isHappy(int n) {
        HashSet<Integer> set = new HashSet<>();
        while (true) {
            String num = String.valueOf(n);
            int result = 0;
            for (int i = 0; i < num.length(); i++) {
                String s = String.valueOf(num.charAt(i));
                int i1 = Integer.parseInt(s);
                result+=i1*i1;
            }
            if (result == 1) {
                return true;
            } else {
                n =result;
                if (!set.add(n)) {
                    return false;
                }
            }
        }
    }
}
